This disclosure generally relates to generating user interfaces (UI) of computer applications, and particularly to extending user interfaces for target applications executing on an operating system with additional user interface control elements to provide additional functionality to the target application.
Computer operating systems manage user interfaces and associated event handling for applications executing on the operating systems. Typically, the design of the user interface and the native functionality of a computer application (or the operating system) are determined by the application developer. The developer may (or may not) allow other programs to modify the user interface of the application, but at best in only specific and limited ways. For example, operating systems and applications may expose via an application programming interface (API) or via plug-in services, limited and specific ways to modify or add user interface objects, such as placing objects in particular menus, panes, or other predefined areas of the user interface. However, conventional operating systems and applications do not allow for third party applications to arbitrarily modify their user interfaces. In particular, conventional operating systems and applications do not enable a third party application to arbitrarily extend their user interfaces by attaching additional user interface objects to the user interface, where the additional user interface objects control additional functionality. As a result, this restricts the ability of third party application developers to offer features and functionality that enhances the underlying operating system or application.